#include "dir.h"

Dir::Dir()
{

}

std::list<std::string> Dir::entryList(std::string dirName, std::string filters)
{
    //定义一个链表，存储遍历到的所有图片
    std::list<std::string> list;

    //1、打开目录文件
    DIR * dirFp = opendir(dirName.data());
    if(dirFp == NULL)
    {
        std::cout<<"opendir error:"<<dirName<<std::endl;
        return list;
    }
    //2、读取目录下的文件信息
    while(1)
    {
        struct dirent * info = readdir(dirFp);
        if(info == NULL)
        {
            break;
        }
        //获取读取到的文件名  d_name-->1.bmp
        if(info->d_name[0] != '.' &&  strstr(info->d_name,filters.data()) != NULL) // . 和 ..
        {
            //拼接路径   ./res/startBmp/1.bmp
            std::string fileNamePath;
            fileNamePath += dirName + "/" + info->d_name;
            //3、将读取到的每个路径文件名保存到链表中
            list.push_back(fileNamePath);
        }
    }

    //4、关闭目录文件
    closedir(dirFp);

    return list;
}
